#include "uart_task.h"
#include "FreeRTOS.h"
#include "task.h"
#include "ti_msp_dl_config.h"  // 根据实际硬件驱动调整

#include "stdio.h"
#include "pid.h"
#include "uart.h"
#include "xunji_task.h"
#include "motor_task.h"
#include "change.h"

/* 私有函数和变量（仅本文件可见） */

uint8_t lock = 0;

uint8_t rx_xunji;
#define init_speed 30
#ifdef MASTER_MODE
static uint8_t task1_flag;

static uint8_t task2_flag;
void UartTask(void *pvParameters) 
{
    int k = 0,i=0;
    // pid_speed.target_val = 30;调速度环所用代码


    /* 任务主循环 */
    for (;;) {
        // pid_speed.target_val = 30;
        // k = !k;
        // if(k == 0)
        // {
        //     pid_speed.target_val = 0;
        // }
        // else {
        //     pid_speed.target_val = 30;
        // }//调速度环所用代码


        // if(task_mode == 0&&task1_flag < 30)
        // {
        //     if(xunji_target == 30){task1_flag++ ;}
        //     UART_SendByte(xunji_target);
        //     pid_speed.target_val = (float)init_speed - (float)xunji_target;
        // }   //任务1

        // if(task_mode == 1)
        // {
        //     if(task2_flag_2 != 1 && task2_flag_2 != 4)
        //     {
        if(lock == 0){
                if(xunji_send_flag == 0)
                {
                    pid_speed.target_val = (float)init_speed - (float)xunji_target;  //
                    UART_SendByte(0);
                }
                else
                {
                    pid_speed.target_val = init_speed;
                    UART_SendByte(xunji_target);
                }}
        else {
            pid_speed.target_val = 0;
            UART_SendByte(30);
        }
        //     }
        //     else if (task2_flag_2 == 3 || task2_flag_2 == 1) {
                // UART_SendByte(30);
            
        //     }
           
        // }

        // if(xunji_send_flag == 0)
        // {
        //     pid_speed.target_val = (float)init_speed - (float)xunji_target;  //
        //     UART_SendByte(0);
        // }
        // else
        // {
        //     pid_speed.target_val = init_speed;
        //     UART_SendByte(xunji_target);
        // }

       vTaskDelay(pdMS_TO_TICKS(1));
    }
    
    /* 理论上不会执行到这里 */
    vTaskDelete(NULL);
}

#else
/* 从机接收任务主函数 */   
void UartTask(void *pvParameters) 
{
    int k = 0,i=0;
    
    // pid_speed.target_val = 30;调速度环所用代码


    /* 任务主循环 */
    for (;;) {
        // pid_speed.target_val = 30;
        // k = !k;
        // if(k == 0)
        // {
        //     pid_speed.target_val = 0;
        // }
        // else {
        //     pid_speed.target_val = 30;
        // }//调速度环所用代码
       if (!DL_UART_isRXFIFOEmpty(UART_0_INST)) {  // 检查是否有数据
        rx_xunji = DL_UART_receiveData(UART_0_INST);  // 读取数据
        pid_speed.target_val = (float)init_speed - (float)rx_xunji; // 更新目标值
     } 
       
       vTaskDelay(pdMS_TO_TICKS(1));
    }
    
    /* 理论上不会执行到这里 */
    vTaskDelete(NULL);
}
#endif




